home *** CD-ROM | disk | FTP | other *** search
/ Aminet 15 / Aminet 15 - Nov 1996.iso / Aminet / dev / misc / libx11inc.lha / X11 / Xm / PushBGP.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-02-13  |  5.8 KB  |  193 lines

  1. /* 
  2.  * (c) Copyright 1989, 1990, 1991, 1992 OPEN SOFTWARE FOUNDATION, INC.
  3.  * ALL RIGHTS RESERVED
  4. */ 
  5. /*   $RCSfile: PushBGP.h,v $ $Revision: 1.14 $ $Date: 92/07/06 14:50:29 $ */
  6. /*
  7. *  (c) Copyright 1989, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
  8. /*
  9. *  (c) Copyright 1987, 1988, 1989, 1990, 1991, 1992 HEWLETT-PACKARD COMPANY */
  10. /*
  11. *  (c) Copyright 1988 MASSACHUSETTS INSTITUTE OF TECHNOLOGY  */
  12. /*
  13. *  (c) Copyright 1988 MICROSOFT CORPORATION */
  14. #ifndef _XmPButtonGP_h
  15. #define _XmPButtonGP_h
  16.  
  17. #include <Xm/PushBG.h>
  18. #include <Xm/LabelGP.h>
  19.  
  20. #ifdef __cplusplus
  21. extern "C" {
  22. #endif
  23.  
  24. /*************************************************************/
  25. /* The PushButton Gadget Cache Object's class and instance records*/
  26. /*************************************************************/
  27.  
  28. typedef struct _XmPushButtonGCacheObjClassPart
  29. {
  30.     int foo;
  31. } XmPushButtonGCacheObjClassPart;
  32.  
  33.                     
  34. typedef struct _XmPushButtonGCacheObjClassRec  
  35. {
  36.     ObjectClassPart                     object_class;
  37.         XmExtClassPart                      ext_class;
  38.     XmLabelGCacheObjClassPart           label_class_cache;
  39.     XmPushButtonGCacheObjClassPart      pushbutton_class_cache;
  40. } XmPushButtonGCacheObjClassRec;
  41.  
  42. externalref XmPushButtonGCacheObjClassRec xmPushButtonGCacheObjClassRec;
  43.  
  44.  
  45. typedef struct _XmPushButtonGCacheObjPart
  46. {
  47.    Boolean         fill_on_arm;
  48.    Pixel            arm_color;
  49.    Pixmap        arm_pixmap;
  50.    Pixmap           unarm_pixmap;
  51.    unsigned char    multiClick;     /* KEEP/DISCARD resource */
  52.    Dimension        default_button_shadow_thickness;
  53.              /* New resource - always add it to gadget's dimension. */
  54.  
  55.    GC               fill_gc;
  56.    GC               background_gc;
  57.    int              timer;
  58.    
  59. } XmPushButtonGCacheObjPart;
  60.  
  61. typedef struct _XmPushButtonGCacheObjRec
  62. {
  63.     ObjectPart                   object;
  64.     XmExtPart                    ext;
  65.     XmLabelGCacheObjPart         label_cache;
  66.     XmPushButtonGCacheObjPart    pushbutton_cache;
  67. } XmPushButtonGCacheObjRec;
  68.  
  69.  
  70. /* PushButton class structure */
  71.  
  72. typedef struct _XmPushButtonGadgetClassPart
  73. {
  74.     XtPointer extension;  /* Pointer to extension record */
  75. } XmPushButtonGadgetClassPart;
  76.  
  77.  
  78. /* Full class record declaration for PushButton class */
  79.  
  80. typedef struct _XmPushButtonGadgetClassRec 
  81. {
  82.    RectObjClassPart             rect_class;
  83.    XmGadgetClassPart            gadget_class;
  84.    XmLabelGadgetClassPart       label_class;
  85.    XmPushButtonGadgetClassPart  pushbutton_class;
  86.  
  87. } XmPushButtonGadgetClassRec;
  88.  
  89.  
  90. externalref XmPushButtonGadgetClassRec xmPushButtonGadgetClassRec;
  91.  
  92.  
  93. /* PushButton instance record */
  94.  
  95. typedef struct _XmPushButtonGadgetPart
  96. {
  97.    XtCallbackList   activate_callback;
  98.    XtCallbackList   arm_callback;
  99.    XtCallbackList   disarm_callback;
  100.  
  101.    Dimension        show_as_default;
  102.    Boolean         armed;
  103.    int              click_count;
  104.  
  105.    Boolean        compatible;      /* if false it is Motif 1.1 else Motif 1.0  */
  106.                                   /* not cached for performance reasons */
  107.    
  108.    XmPushButtonGCacheObjPart  *cache; /* Replace cache instance fields */
  109.                     /* with a pointer */
  110. } XmPushButtonGadgetPart;
  111.  
  112. /* Full instance record declaration */
  113.  
  114. typedef struct _XmPushButtonGadgetRec {
  115.    ObjectPart              object;
  116.    RectObjPart             rectangle;
  117.    XmGadgetPart            gadget;
  118.    XmLabelGadgetPart       label;
  119.    XmPushButtonGadgetPart   pushbutton;
  120. } XmPushButtonGadgetRec;
  121.  
  122. /* MACROS */
  123. /**********/
  124.  
  125. /* Macros for cached instance fields */
  126.  
  127. #define PBG_FillOnArm(w)        (((XmPushButtonGadget) (w)) -> \
  128.                        pushbutton.cache->fill_on_arm)
  129. #define PBG_ArmColor(w)            (((XmPushButtonGadget) (w)) -> \
  130.                        pushbutton.cache->arm_color)
  131. #define PBG_FillGc(w)            (((XmPushButtonGadget) (w)) -> \
  132.                        pushbutton.cache->fill_gc)
  133. #define PBG_BackgroundGc(w)        (((XmPushButtonGadget) (w)) -> \
  134.                        pushbutton.cache->background_gc)
  135. #define PBG_Timer(w)            (((XmPushButtonGadget) (w)) -> \
  136.                        pushbutton.cache->timer)
  137. #define PBG_ArmPixmap(w)        (((XmPushButtonGadget) (w)) -> \
  138.                        pushbutton.cache->arm_pixmap)
  139. #define PBG_UnarmPixmap(w)        (((XmPushButtonGadget) (w)) -> \
  140.                        pushbutton.cache->unarm_pixmap)
  141. #define PBG_MultiClick(w)              (((XmPushButtonGadget) (w)) -> \
  142.                                       pushbutton.cache->multiClick)
  143. #define PBG_DefaultButtonShadowThickness(w)     (((XmPushButtonGadget) (w)) -> \
  144.                        pushbutton.cache->default_button_shadow_thickness)
  145.  
  146. /* Macros for uncached instance fields */
  147.  
  148. #define PBG_ActivateCallback(w)        (((XmPushButtonGadget) (w)) -> \
  149.                        pushbutton.activate_callback)
  150. #define PBG_ArmCallback(w)        (((XmPushButtonGadget) (w)) -> \
  151.                        pushbutton.arm_callback)
  152. #define PBG_DisarmCallback(w)        (((XmPushButtonGadget) (w)) -> \
  153.                        pushbutton.disarm_callback)
  154. #define PBG_Armed(w)            (((XmPushButtonGadget) (w)) -> \
  155.                        pushbutton.armed)
  156. #define PBG_ClickCount(w)      (((XmPushButtonGadget) (w)) -> \
  157.                        pushbutton.click_count)
  158. #define PBG_Compatible(w)      (((XmPushButtonGadget) (w)) -> \
  159.                        pushbutton.compatible)
  160. #define PBG_ShowAsDefault(w)        (((XmPushButtonGadget) (w)) -> \
  161.                        pushbutton.show_as_default)
  162.  
  163. /******************************/
  164. /* Convenience Macros         */
  165. /******************************/
  166.  
  167. #define PBG_Cache(w)            (((XmPushButtonGadget)(w))->\
  168.                        pushbutton.cache)
  169. #define PBG_ClassCachePart(w) \
  170.     (((XmPushButtonGadgetClass)xmPushButtonGadgetClass)->gadget_class.cache_part)
  171.  
  172.  
  173. /********    Private Function Declarations    ********/
  174. #ifdef _NO_PROTO
  175.  
  176. extern void _XmClearBGCompatibility() ;
  177.  
  178. #else
  179.  
  180. extern void _XmClearBGCompatibility( 
  181.                         Widget pbg) ;
  182.  
  183. #endif /* _NO_PROTO */
  184. /********    End Private Function Declarations    ********/
  185.  
  186.  
  187. #ifdef __cplusplus
  188. }  /* Close scope of 'extern "C"' declaration which encloses file. */
  189. #endif
  190.  
  191. #endif /* _XmPButtonGP_h */
  192. /* DON'T ADD ANYTHING AFTER THIS #endif */
  193.